#ifndef MAINWINDOW_HPP
# define MAINWINDOW_HPP

# include <QMainWindow>
# include <QListWidgetItem>
# include "OglWidget.hpp"
# include "BrushType.hpp"
# include "CameraType.hpp"
# include "SceneManager.hpp"

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
    void        initMenus();
    void        initWidgets();
    void        init3DMenuOptions();

public slots:

    void        menuActionAbout();

    void        menuActionLoadMap();
    void        menuActionSaveMap();
    void        menuActionSaveMapAs();

    void        menuActionNewMap();
    void        menuActionImportTexture();
    void        menuActionImportModel();

    void        menuActionFill();
    void        menuActionLine();
    void        menuActionPoint();

    void        buttonActionFixedCamera();
    void        buttonActionTrackCamera();
    void        buttonActionFPSCamera();
    void        buttonActionBrushLittle();
    void        buttonActionBrushMiddle();
    void        buttonActionBrushLarge();

    void        handleTextureListClick(QListWidgetItem*);
    void        handleModelListClick(QListWidgetItem*);

private:
    Ui::MainWindow *ui;

    OglWidget*      _glDisplay;

    BrushType       _currentBrush;
    CameraType      _currentCamera;

    SceneManager    _manager;
};

#endif // MAINWINDOW_HPP
